Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Возврат полученных данных, т.е. синхронная загрузка (Алексей.)
Author Message
Алексей.
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jul 06, 2007 7:53 pm (написано за 7 минут 55 секунд)
   Post subject: Возврат полученных данных
Reply with quote

Как вернуть данные полученные с помошью с сервера? Если это возможно конечно.
Вот что я имею в виду.
Code (JavaScript): скопировать код в буфер обмена
// здесь выполняется какой-то код....
// Для дальнейщего выполнения нужно получить с сервера данные например

var smth = loadData(); // получаем данные, т.е. в ф-ции loadData с помощью JsHttpRequest идет обращение к серверу

function loadData()
{
        JsHttpRequest.query("fo_act.jshr.php",{"action":"getFoa"},function(result, errors) {...},true );
}
// далее код с использованием переменной smth
 
так вот как получить данные из loadData если при получаемые данные передаются в функцию. Можно ли как-нибудь передать полученные данные из loadData
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Jul 08, 2007 3:46 pm (спустя 1 день 19 часов 53 минуты; написано за 59 секунд)
   Post subject:
Reply with quote

Нельзя никак.
AJAX - это принципиально асинхронная технология. Т.е. данные становятся доступны не сразу, а спустя некоторое время, и обработать их можно только в callback-функции.
Это несколько сложнее программировать (как правило), но приноровиться можно.
Back to top
View user's profile Send private message Send e-mail
Павел__
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Jul 11, 2007 11:58 pm (спустя 3 дня 8 часов 11 минут; написано за 1 минуту 33 секунды)
   Post subject:
Reply with quote

Тоесть, получается, я не могу написать функцию, которая будет в качестве параметра принимать, скажем, логин и в ответ возвращать true|false, делая запрос на сервер, где выполнится проверка занят ли такой логин?
Back to top
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Thu Jul 12, 2007 9:48 am (спустя 9 часов 50 минут; написано за 1 минуту 20 секунд)
   Post subject:
Reply with quote

Code (JavaScript): скопировать код в буфер обмена
window.m = ''

function check_login(login)
{

        JsHttpRequest.query
        (
                '/backend.php',
                {
                        'login': login
                },
                function(result, errors)
                {
                        window.m = result["r"];
                },
                true
        );

        // Вообще, всё, что нужно - в этом месте организовать ожидание, пока "window.m" перестанет быть пустой строкой.
        // Например, можно было бы организовать какую-нибудь манипуляцию с setTimeout, которая раз в четверть
        // секунды будет прверять не изменилось ли состояние window.m, и если изменилось - возвращать результат...
        // Я правильно понимаю?
        // Как бы это лучше сделать?
}


if (check_login('UserName'))
{
        alert("Логин свободен")
}
else
{
        alert("Логин занят")
}
Back to top
View user's profile Send private message
Никита Косолaпов
Участник форума



Joined: 08 Aug 2006
Posts: 172
Карма: 9
   поощрить/наказать

Location: Москва

PostPosted: Thu Jul 12, 2007 11:10 am (спустя 1 час 21 минуту; написано за 1 минуту 51 секунду)
   Post subject:
Reply with quote

Нет... все гораздо проще:
Code (php): скопировать код в буфер обмена
    function check_login(login) {
        JsHttpRequest.query(
               '/backend.php',
                {
                        'login': login
                },
                function(result, errors)
                {
                                alert(result);
                },
                true
        );
    }
А backend возвращает Вам соответственно сроку "логин занят" или "Логин свободен"
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Thu Jul 12, 2007 4:02 pm (спустя 4 часа 51 минуту; написано за 40 секунд)
   Post subject:
Reply with quote

Мне нужно, чтобы функция не печатала, а возвращала.
Back to top
View user's profile Send private message
Никита Косолaпов
Участник форума



Joined: 08 Aug 2006
Posts: 172
Карма: 9
   поощрить/наказать

Location: Москва

PostPosted: Thu Jul 12, 2007 4:23 pm (спустя 21 минуту; написано за 44 секунды)
   Post subject:
Reply with quote

Хммм... Если не сложно, распишите задачу более подробно и скажите - зачем Вам нужно чтобы функция именно возвращала значение?
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sat Jul 14, 2007 7:47 pm (спустя 2 дня 3 часа 24 минуты; написано за 2 минуты 10 секунд)
   Post subject:
Reply with quote

Не понимаю, что тут подробнее расписывать :) Вы никогда не писали функций, который возвращают по запросу проверки True или False?

Есть готовая функция проверки данных формы, в которой пробегаются все поля и данные проверяются.

Хочу добавить в неё проверку логина.

Идеально простым вариантом было бы добавить что-то вроде
Code (php): скопировать код в буфер обмена
if (!reg_check_login(login))
{
    alert("   ");
    return false;
}
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Sat Jul 14, 2007 8:04 pm (спустя 17 минут; написано за 4 минуты 54 секунды)
   Post subject:
Reply with quote

Fog wrote:
Мне нужно, чтобы функция не печатала, а возвращала.
В данном случае разница - несущественна. Мне (при том, что я не знаток JS) представляется такой вариант:
При вызове функции Вы переводите какую-то (допустим, глобальную) переменную в состояние "жду ответа" и запускаете проверку по таймеру. Когда приходит ответ, Вы меняете содержимое этой переменной (скажем, на "success" или "failure"). Таймерная проверка обнаруживает изменение переменной, предпринимает нужные действия и останавливает таймер.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Jul 15, 2007 1:49 pm (спустя 17 часов 45 минут; написано за 2 минуты 20 секунд)
   Post subject:
Reply with quote

Зачем так сложно с таймером?
Просто при получении ответа - сразу же предпринимайте нужные действия. Например, редирект на другую страницу.

Fog
Вам уже много раз сказали, что синхронная и асинхронная загрузка - не одно и то же. И что с помощью асинхронных запросов прямой синхронности можно добиться не всегда. Вы хотите "вернуть значение", это при помощи технологии AJAX нельзя сделать просто по определению (AJAX = ASYNCHRONOUS JavaScript and XML). Изыскивайте другие способы, асинхронные.
Back to top
View user's profile Send private message Send e-mail
Никита Косолaпов
Участник форума



Joined: 08 Aug 2006
Posts: 172
Карма: 9
   поощрить/наказать

Location: Москва

PostPosted: Mon Jul 16, 2007 11:48 am (спустя 21 час 58 минут; написано за 1 минуту 1 секунду)
   Post subject:
Reply with quote

Как вариант - всю проверку полей формы вынести в backend.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML